/**
 *  EKology - An Ecosystem Simulation Framework
 *  Copyright (C) 2008  Aarón Tavío - aaron.tavio at gmail.com - ULPGC
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */

package net.ekology.core.gui;

import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import net.ekology.ekosystem.*;
import net.ekology.core.gui.datatypes.Argument;


/**
 * @author Aarón Tavío - aaron.tavio at gmail.com
 * @version 1.0.0 - 20081019-1700
 */
public class ObjectPaneFactory {
    private EKologyView oView;
    private JScrollPane oParentPane;
    
    public ObjectPaneFactory(EKologyView oView, JScrollPane oParentPane) {
        this.oView = oView;
        this.oParentPane = oParentPane;
        this.updatePane();
    }

      
    public void updatePane() {
        DefaultMutableTreeNode oSelectedNode;
        Argument oArgument;
        Object oUserObject;
        
         oSelectedNode = oView.getSelectedNode();
        
        if (oSelectedNode != null) {
            oUserObject = oSelectedNode.getUserObject();
            if (oUserObject instanceof Argument) {
                oArgument = (Argument) oUserObject;
                if (oArgument.getValue() instanceof Class) new SpeciesPane(oView,oParentPane, (Class) oArgument.getValue()); // extract the value (a Class object inside an Argument object)
            } 
            else if (oUserObject instanceof Agent) new AgentPane(oView, oParentPane, (Agent) oUserObject);
            else if (oUserObject instanceof Biotope) new BiotopePane(oView, oParentPane, (Biotope) oUserObject);
        }
    }

}
